<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>打开控制台查看结果</div>

    <script>
        console.log('==========Promise.allSettled()=========');
        /*
           Promise.allSettled()方法可以在所有异步操作都结束的情况下，调用该方法。它与Promise.all()方法不同的是，all()方法需要所有异步都成功才会进入then()，而allSettled()不需要。
        */

        let p = new Promise((resolve,reject)=>{
            resolve('p1状态')
        })
        
        let p2 = new Promise((resolve,reject)=>{
            setTimeout(()=>{
                reject('p2状态')
            },3000)
        })

        Promise.allSettled([p,p2])
        .then(el=>{
            console.log(el);
            // 0: {status: 'fulfilled', value: 'p1状态'}
            // 1: {status: 'rejected', reason: 'p2状态'}
        })

        /*
           Promise.allSettled()的参数不管是reject还是resolve都会触发，只要参数的状态全都发生改变即可，上面代码中，p2延迟了3s状态才发生改变，那么Promise.allSettled()则会等待参数的状态全都发生改变时触发。
        */
       

    </script>
</body>
</html>